Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Структура даних СТЕК

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування
Група:
КІ-24

Частина тексту файла

Міністерство освіти та науки України Національний університет «Львівська політехніка»  ЗВІТ З лабораторної роботи №3 З дисципліни: «Програмування ч.3 Структури і алгоритми» " Структура даних СТЕК" Варіант № 21 Варіант=(8+75)%21+1=21 Мета роботи Вивчення фундаментальної абстрактної структури даних стек. Набуття практичних навичок побудови стека, дослідження динаміки його вмісту та використання стеків для розв'язання прикладних задач. Завдання 2.1. Постановка задачі. Змоделювати стек на базі статичного масиву згідно з завданням. Написати основні операції для роботи зі стеком (push, pop, top, empty, full) і продемонструвати правильність їх виконання. Для цього (якщо в завданні не вказано інший спосіб) в програмі на вході задати послідовність з К (К>10) цілих чисел (числа вводити з клавіатури). Всі додатні числа послідовно заносити в стек, а кожне від'ємне число має вилучати зі стеку один елемент. Виводити на екран динаміку вмісту стеку під час обробки заданої послідовності. Вхідну послідовність чисел задати такою, щоб вона демонструвала роботу основних операцій та генерувала виникнення ситуацій "втрати значимості стеку"(stack underflow) і "переповнення стеку" (stack overflow). Примітка: після реалізації стеку працювати з ним як з абстрактним типом даних, а не як з масивом. 21. Написати програму для послiдовного зберiгання трьох стекiв в масивi з N елементiв (стеки розміщуються в масиві рівномірно один за одним). На вході задаються пари цiлих чисел (i,j), де 1 ( і ( 3 , j ( 0. Число j>0 пари (i,j) додається в i-ий стек; число j<0 пари (i,j) не використовується, але один елемент вилучається зі стеку. Після обробки всієї заданої вхідної послідовності знайти в якому стеку сума всіх парних чисел буде найменьшою. 2.2. Алгоритм розв’язання задачі. Стек реалізований на масиві за допомогою класу під назвою Stack. Він містить поля – масив (власне стек), три змінних, які будуть вказувати на останній елемент масиву (перший елемент, який доданий до стеку) три змінні FULL типу bool для перевірки на заповнення стеку та три змінні типу bool EMPTY для перевірки пустоти стеку. Для перевірки в якому стеку найменша кількість парних чисел використовується допоміжна функція getElements(int), яка приймає номер стеку та повертає суму парних елементів. Після отримання трьох сум знаходимо мінімальне і виводимо на екран номер стеку. 3. Результати виконання програми.  4.Висновки: Ознайомився з фундаментальною абстрактною структурою даних стек. Набув практичних навичок побудови стеку, дослідив динаміку його вмісту та використав стек для розв'язання прикладних задач. 5. Додатки: #include "stdafx.h" #include <iostream> #include <string.h> #include <conio.h> using namespace std; class Stack { int data [60]; // стек int tos1, tos2, tos3; // індекс вершини public: Stack (); // конструктор void push (int, int); // додавання елементу void pop (int); // вилучення int top(int); // перегляд елементу в вершині void show(int); // вивід динаміки стеку int empty (int); // перевірка на елементи в стеку int getSize(int); // отримати розмір стеку bool FULL1, FULL2, FULL3; // логічна змінна переповнення bool EMPTY1, EMPTY2, EMPTY3; int getElements(int); }; Stack::Stack(){ tos1 = 0; tos2 = 20; tos3 = 40; FULL1 = false; FULL2 = false; FULL3 = false; EMPTY1 = true; EMPTY2 = true; EMPTY3 = true; } void Stack::push(int i, int s){ if (EMPTY1 && i == 1) EMPTY1 = false; if (EMPTY2 && i == 2) EMPTY2 = false; if (EMPTY3 && i == 3) EMPTY3 = false; if (FULL1 && i == 1) throw "Steck overflow exception"; if (FULL2 && i == 2) throw "Steck overflow exception"; if (FULL3 && i == 3) throw "Steck overflow exception"; cout << "push: " << s << endl; if (i == 1){ data[tos1] = s; tos1++; if (tos1 == 19) FULL1 = true; } if (i == 2){ data[tos2] = s; tos2++; if (tos2 == 39) FULL2 = true; } if (i == 3){ data[tos3] = s; tos3++; if (tos3 == 59) FULL3 = true; } } int Stack::top(int i){ if (i...
Антиботан аватар за замовчуванням

18.11.2012 18:11

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини